|
Date : 23 aout 1991 Protection : MOT DE PASSE Programme : PARIS DAKAR 90 Outils : SOFT-ICE V2.50 Fichier : LOADER.EXE Temps pass� : 45 MINUTES Soci�t� : INFERENCE M.D.O. Divers : D�j� essay� en INDONESIE et en FRANCE. Origine : INDONESIE Num�ro : 135 Cette protection est celle sur laquelle je me suis d�j� cass� les dents � plusieurs reprises. Elle imite une machine � sous dont le r�sultat correspond � une couleur parmi huit. Elle est pr�sente �galement dans les jeux GEISHA ( o� elle efface la table des INT ) ainsi que dans le jeu COUGAR FORCE. En d�roulant le soft au pas � pas on trouve le CALL qui affiche " WRONG CODE " en 0C83:1F5B. Le saut qui se trouve juste avant est imm�diatement invers� pour voir; le jeu se plante... Il va donc falloir �tudier la condition du saut. CS=0C83 CS:1F53 3BD0 CMP DX,AX CS:1F55 741A JZ 1F71 ; SI AX = DX ON SAUTE ( OK ) CS:1F57 B8FFFF MOV AX,FFFF CS:1F5A 50 PUSH AX CS:1F5B 9A0500A32A CALL 2AA3:0005 ; AFFICHE " WRONG CODE " Les instructions qui d�terminent si l'on saute ou non sont les suivantes: CS:1F42 268A07 MOV AL,ES:[BX] ES:558C=40 ; Valeur ; choisie par le programme... CS:1F45 98 CBW ; Converti un octet en mot. CS:1F46 257000 AND AX,0070 ; Masque 0000 0000 0111 0000 CS:1F49 B104 MOV CL,04 ; On charge CL avec 4 CS:1F4B D3F8 SAR AX,CL ; Shit Arith. Droit de CL fois. CS:1F4D 50 PUSH AX ; On sauve AX sur la pile. CS:1F4E A0B071 MOV AL,[71B0] ; Valeur choisie par le joueur ; de 0 � 7 ( TOUCHE ENFONCEE ). CS:1F51 98 CBW CS:1F52 5A POP DX ; Le contenu de AX va en DX. CS:1F53 3BD0 CMP DX,AX ; On compare. CS:1F55 741A JZ 1F71 ; Si OK on charge le jeu... En ES:[BX] on trouve ce que le programme y place d'une fa�on pseudo al�atoire et en 71b0 la valeur de 0 � 7 correspondant � la touche enfonc�e par le joueur. En faisant des essais avec toujours le m�me chiffre ( 5 - couleur bleue ) on trouve 04 en 71b0. Pour que la condition AX = DX se r�alise il faut avoir �galement 0004 en AX avant que le registre ne soit PUSH� sur la pile. ( DX re�oit le contenu de 71B0 qui est 04 converti par CBW en mot de 16 bits ( 0004 ). Il s'agit de trouver maintenant la valeur que doit contenir ES:[BX] pour obtenir 0004 en AX apr�s un AND 70 et un SAR de 4. Pour cel� rien de plus simple que d'effectuer ces deux op�rations � l'envers; SAR de 4 devient un SAL de 4 ce qui transforme notre 0004 en 0040. Un AND de 70 ne change rien, il suffit donc que ES:[BX] contienne toujours 0040 et que 71B0 contienne 04. Ce qui permettra de cliquer sur n'importe quelle couleur sans affecter 71B0 et le programme lui pr�sentera toujours 0040 en ES:[BX]. Pour obtenir ceci il suffit de charger ces deux positions m�moires avec ces deux valeurs et de forcer le saut conditionnel afin qu'il �vite la routine du " WRONG CODE ". L'�galit� de ces deux positions doit �tre test� plus loin puisque le programme se 'viande' lorsque l'on ne modifie que le saut. Transformer le programme comme suit: CS:1F42 26C60740 MOV BYTE PTR ES:[BX],40 ; On place 40 en ; ES:558C. CS:1F46 C606B07104 MOV BYTE PTR [71B0],04 ; On place 04 en ; DS:71B0. CS:1F4B EB24 JMP 1F71 ; On saute en 1F71. La suite reste inchang�e, mais cel� n'a pas d'importance puisque non utilis�e ! CS:1F4D 50 PUSH AX CS:1F4E A0B071 MOV AL,[71B0] CS:1F51 98 CBW CS:1F52 5A POP DX CS:1F53 3BD0 CMP DX,AX CS:1F55 741A JZ 1F71 Avec PCTOOLS chercher la chaine C41EBD71268A et modifier � partir de 8A inclu : C60740C606B07104EB24. FREDDY |